<?php
namespace app\index\controller;

/**
 * 引入必要的类和模型
 */
use think\Controller;
use app\index\model\Reply as ReplyModel;
use think\Session;

/**
 * 回复控制器类
 * 负责处理用户对留言的回复发布和删除操作
 */
class Reply extends Controller
{
    /**
     * 回复模型实例
     * @var ReplyModel
     */
    protected $reply;

    /**
     * 构造函数
     * 初始化控制器并实例化回复模型
     */
    public function __construct()
    {
        parent::__construct();
        $this->reply = new ReplyModel();
    }

    /**
     * 发表回复方法
     * 处理用户发表对留言的回复
     * 
     * @return mixed 回复成功后返回成功提示，失败则显示错误信息
     */
    public function publish()
    {
        // 检查用户是否已登录
        if (!Session::has('user_id')) {
            $this->error('请先登录', 'user/login');
        }

        // 检查是否为POST请求
        if (!request()->isPost()) {
            $this->error('非法请求');
        }

        // 获取表单提交的数据
        $data = input('post.');
        // 设置当前登录用户ID
        $data['user_id'] = Session::get('user_id');

        // 使用验证器验证提交的数据
        $validate = validate('Reply');
        if (!$validate->scene('create')->check($data)) {
            $this->error($validate->getError());
        }

        // 调用模型方法发表回复
        $result = $this->reply->publish($data);
        if ($result['status']) {
            $this->success('回复成功');
        } else {
            $this->error($result['msg']);
        }
    }

    /**
     * 删除回复方法
     * 处理用户删除自己发表的回复
     * 
     * @param int $id 要删除的回复ID
     * @return mixed 删除成功后返回成功提示，失败则显示错误信息
     */
    public function delete($id)
    {
        // 检查用户是否已登录
        if (!Session::has('user_id')) {
            $this->error('请先登录', 'user/login');
        }

        // 检查ID参数是否存在
        if (!$id) {
            $this->error('参数错误');
        }

        // 调用模型方法删除回复（软删除）
        $result = $this->reply->remove($id, Session::get('user_id'));
        if ($result['status']) {
            $this->success('删除成功');
        } else {
            $this->error($result['msg']);
        }
    }
} 